// pages/user/login.js
import {login_by_wechat} from '../../utils/user.api.js';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    phone: '',
    code: '',
    agreeProtocol: false,
    codeBtnText: '获取验证码',
    codeBtnDisabled: false,
    loginBtnDisabled: true,
    countDown: 60
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 输入手机号
   */
  inputPhone(e) {
    const phone = e.detail.value;
    this.setData({
      phone
    });
    this.checkLoginButton();
  },

  /**
   * 输入验证码
   */
  inputCode(e) {
    const code = e.detail.value;
    this.setData({
      code
    });
    this.checkLoginButton();
  },

  /**
   * 检查登录按钮状态
   */
  checkLoginButton() {
    const { phone, code, agreeProtocol } = this.data;
    const phoneValid = /^1\d{10}$/.test(phone);
    const codeValid = /^\d{6}$/.test(code);
    
    this.setData({
      loginBtnDisabled: !(phoneValid && codeValid && agreeProtocol)
    });
  },

  /**
   * 获取验证码
   */
  getVerifyCode() {
    const { phone } = this.data;
    if (!/^1\d{10}$/.test(phone)) {
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      });
      return;
    }
    
    // 模拟发送验证码
    this.setData({
      codeBtnDisabled: true,
      codeBtnText: `${this.data.countDown}s`
    });
    
    let countDown = this.data.countDown;
    const timer = setInterval(() => {
      countDown--;
      this.setData({
        codeBtnText: `${countDown}s`
      });
      
      if (countDown === 0) {
        clearInterval(timer);
        this.setData({
          codeBtnDisabled: false,
          codeBtnText: '重新获取'
        });
      }
    }, 1000);
    
    // 模拟验证码发送成功
    wx.showToast({
      title: '验证码已发送',
      icon: 'success'
    });
  },

  /**
   * 切换协议同意状态
   */
  toggleProtocol() {
    this.setData({
      agreeProtocol: !this.data.agreeProtocol
    });
    this.checkLoginButton();
  },

  /**
   * 查看协议
   */
  viewProtocol(e) {
    const type = e.currentTarget.dataset.type;
    const title = type === 'user' ? '用户协议' : '隐私政策';
    
    wx.showModal({
      title,
      content: `这是${title}的内容，实际开发中应该跳转到对应的页面展示详细内容。`,
      showCancel: false
    });
  },

  /**
   * 手机号登录
   */
  login() {
    const { phone, code } = this.data;
    
    // 模拟登录请求
    wx.showLoading({
      title: '登录中...',
    });
    
    setTimeout(() => {
      wx.hideLoading();
      
      // 模拟登录成功，保存用户信息
      const userInfo = {
        nickName: `用户${phone.substring(7)}`,
        avatarUrl: '/assets/images/default-avatar.png',
        phone: phone,
        level: '普通会员'
      };
      
      // 保存到本地存储
      wx.setStorageSync('userInfo', userInfo);
      wx.setStorageSync('token', 'mock_token_' + Date.now());
      
      wx.showToast({
        title: '登录成功',
        icon: 'success',
        success: () => {
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        }
      });
    }, 1500);
  },

  /**
   * 微信登录
   */
  wxLogin() {
    if (!this.data.agreeProtocol) {
      wx.showToast({
        title: '请先同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }
    // 判断手机号
    if (!/^1\d{10}$/.test(this.data.phone)) {
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      });
      return;
    }
    
    wx.showLoading({
      title: '登录中...',
    });
    
    // 调用微信登录接口
    wx.login({
      success: async(res) => {
        if (res.code) {
          // 发送请求到后端，获取用户信息
          const result = await login_by_wechat({code:res.code, phone:this.data.phone});
          console.log(result);
          if (result.code === 200) {
            // 保存用户信息到本地存储
            wx.setStorageSync('userInfo', result.data.userInfo);
            wx.setStorageSync('token',result.data.token);
            wx.showToast({
              title: '登录成功',
              icon:'success',
              success: () => {
                setTimeout(() => {
                  wx.navigateBack();
                }, 1500);
              }
            })
          }
        }
      }
    })
    
  }
})